package br.com.werp.regras.rh;

import br.com.werp.regras.geral.ErroPadrao;
import br.com.werp.regras.geral.GerenciadorErros;
import br.com.werp.regras.geral.Rh;
import br.com.werp.regras.rh.controle.ControleAniversariantes;
import br.com.werp.regras.rh.controle.ControleFuncionario;
import br.com.werp.regras.rh.controle.ControleNoticia;

import java.util.List;


/**
 * @author Sobreira
 * Criado em 09/09/2005
 */
public class RhImpl implements Rh {
    private static RhImpl rhImpl;
    private ControleFuncionario controleFuncionario = new ControleFuncionario();
    private ControleAniversariantes aniversariantesMes = new ControleAniversariantes();
    private ControleNoticia controleNoticia = new ControleNoticia();

    private RhImpl() {
        super();
    }

    public static Rh getRh() {
        if (rhImpl == null) {
            rhImpl = new RhImpl();
        }

        return rhImpl;
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.GerenciamentoPessoa#pesquisarFuncionario(java.lang.Object)
     */
    public List pesquisarFuncionarios(Object formVO) throws ErroPadrao {
        try {
            return controleFuncionario.pesquisarFuncionarios(formVO);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.GerenciamentoPessoa#persistirFuncionario(java.lang.Object, java.lang.String)
     */
    public void persistirFuncionario(Object formVO, String usuario)
        throws ErroPadrao {
        try {
            controleFuncionario.persistirFuncionario(formVO, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Rh#carregarFuncionarios(java.lang.Object)
     */
    public void carregarFuncionarios(Object formVO) throws ErroPadrao {
        try {
            controleFuncionario.carregarFuncionarios(formVO);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List obterAniversariantesDoMes() throws ErroPadrao {
        try {
            return aniversariantesMes.obterAniversariantesDoMes();
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void inserirNoticia(Object form, String usuario)
        throws ErroPadrao {
        try {
            controleNoticia.inserirNoticia(form, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarNoticia(Object form) throws ErroPadrao {
        try {
            return controleNoticia.pesquisarNoticia(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public String pesquisarNoticiaID() throws Exception {
        try {
            return controleNoticia.pesquisarNoticiaID();
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void carregarNoticia(Object form) throws Exception {
        try {
            controleNoticia.carregarNoticia(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void excluirNoticia(Object form, String usuario)
        throws Exception {
        try {
            controleNoticia.excluirNoticia(form, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }
}
